草庐IT

c++ - Swig -includeall 除了...

全部标签

c++ - 有什么方法可以在运行时不间断地动态更新二进制文件(可执行文件)?

假设我们在1年前用C++制作了一个程序,它一直在连续工作,没有任何停止!在1年前,我们不知道有一天我们应该更新它(由于修复了一些错误)。所以我们没有实现任何DSU(动态软件更新)说明。它也不在让我也可以访问它的内存或上下文的虚拟机中运行。现在如何在不停止的情况下对其进行更新(添加或删除一些函数、数据类型或指令)。有什么建议吗?谢谢。 最佳答案 您必须为其附加一个调试器。在不会破坏任何东西的执行点停止它,替换可执行镜像,重新对齐指令指针,如果您选择了错误的中断点,您还必须重新对齐堆栈并修改可能受到影响/添加的变量新的代码。这比您想拥有

python - 为什么我会丢失 SWIG、C++、python 的异常

我在这里疯了。我希望在C++中捕获异常,以便我可以将它们映射到python中的自定义异常类。我现在得到的只是python异常。我无法在生成的代码中捕获我的异常???程序:#!/usr/bin/pythonimportosimportsysimporthpsphal_pythonprog=os.path.basename(__file__)+":"try:hal=hpsphal_python.System_getSystem()scs=hal.getStorageClusters()iflen(scs)==0:print>>sys.stderr,prog+"Nostoragecluste

c++ - CMake:将 ELF 嵌入到可执行文件中

我有一个项目需要访问嵌入到specialsection中可执行文件中的ELF文件.我以前手工制作Makefile,只是有一个shell脚本,我在其中使用objcopy将我想要嵌入的目标复制到一个.o文件中,然后在可执行文件中链接到该文件。#Createanewsectionandcopythebinarythere($1=input$2=outputname)objcopy--input-targetbinary--output-targetelf64-x86-64\--binary-architecturei386$1$2.o现在我想摆脱自定义Makefile并使用CMake生成它们

c++ - 对于具有 UIAccess ="true"的进程,CreateProcessAsUser 失败并显示 ERROR_ELEVATION_REQUIRED

我正在尝试使用以下代码从我的服务应用程序运行用户模式进程(作为本地系统运行。)用户模式进程的要求是在没有提升的情况下运行,但在其list中有UIAccess="true"以便能够displaytop-mostwindowscorrectlyunderWindows8.所以我这样做(通过我的服务)来运行我的用户模式进程://NOTE:Errorcheckingisomittedforreadability//'dwSessionID'=usersessionIDtorunuser-modeprocessin//'pUserProcPath'=L"C:\\ProgramFiles(x86)

c++ - gdb 重新设置断点时出错(无法访问内存)

我正在尝试让gdb在pcbsd10(freebsd10)中设置一个断点。我已经用调试符号编译了我的代码,这里是gdb的输出GNUgdb(GDB)7.7Copyright(C)2014FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware:youarefreetochangeandredistributeit.ThereisNOWARRANTY,totheextentpermittedbylaw.Type"showcopying"and"showwarranty"fordetails

c++ - 假设我不使用任何重载函数,有没有办法可以停止所有名称修改?

这个问题在这里已经有了答案:Isthereawaytosuppressc++namemangling?(3个答案)关闭8年前。标题几乎说明了一切。我知道我可以使用和外部“C”block来停止重整(虽然我不完全确定我应该把这个block放在哪里)但是有没有办法在整个程序中禁用它?如果我这样做,是否会使从代码编译的库更容易与luajit的FFI之类的东西一起使用?编辑:这被认为是重复的问题特定于DLL和VisualC++编译器。我只是问一个一般的C++问题。

c++ - 在 C/C++ 中查找字符串中具有任意字符顺序的子字符串

假设我有一个字符串“abcdpqrs”,现在“dcb”可以算作上述字符串的子字符串,因为字符在一起。“pdq”也是上述字符串的一部分。但是“bcpq”不是。我希望你得到我想要的。有什么有效的方法可以做到这一点。我所能想到的就是借助哈希来做到这一点。但即使在O(n)程序中也需要很长时间,因为在许多情况下需要回溯。任何帮助将不胜感激。 最佳答案 这是一个O(n*alphabetsize)的解决方案:让我们维护一个数组count[a]=字符a在当前窗口出现了多少次[pos;pos+子串的长度-1]。窗口向右移动1(count[s[pos]

c++ - 为什么未初始化的 const 成员在 C 中的处理方式与在 C++ 中的处理方式不同?

这个问题在这里已经有了答案:constinCvsconstinC++(5个答案)关闭7年前。我为要链接的库包含一个Cheader。header有一个结构foo,我想在其中声明一个新变量bar。我收到编译器错误:error:uninitializedconstmemberin"structfoo"这些成员需要初始化是有道理的,因为以后不能为它们赋值。但是使用这个库的C程序可以做完全相同的事情并且它可以工作。C和C++标准有区别吗?这只是一个示例。实际上,我指的是libmtd.h(mtd-utils)中的结构mtd_dev_info。http://mtd-utils.sourcearchi

java - 返回对成员变量的引用时的 SWIG-Java 内存管理

我正在使用SWIG从Java访问C++代码。C++中的getter通常返回const引用:classB{public:constA&getA()const{returna_;}private:Aa_;};生成SWIG包装器。Java中的B::getA按预期返回引用。然而JVM并不知道这个引用与classB相关联。这可能会导致引用损坏:publicAcreateA(){Bb=newB();returnb.getA();}一旦垃圾收集器销毁Bb并且JVM对此一无所知,从createA返回的对象将无效。SWIG提供了解决此问题的文档:referencesandswig.然而,这意味着我需要手

c++ - cmake find_library 和 CMAKE_FIND_ROOT_PATH

在cmake的find_library函数的文档中,我们有TheCMakevariableCMAKE_FIND_ROOT_PATHspecifiesoneormoredirectoriestobeprependedtoallothersearchdirectories.Thiseffectively“re-roots”theentiresearchundergivenlocations.PathswhicharedescendantsoftheCMAKE_STAGING_PREFIXareexcludedfromthisre-rooting,becausethatvariableisa